/* 
 * Die Klasse erzeugt ein Dialogfenster, in dem die Daten fuer den 
 * Standort eingegeben werden koennen.
 * 
 * Datei: StandortAnlegenPanel.java Autor:  Christian Plappert
 * Datum: 08.12.2011                Version: 0.1
 * 
 * Historie: 
 * 
 * 08.12.2011:  v0.1    Klasse wurde angelegt.
 *                      
 */
package bibvis;

import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JTextPane;

import basis.lokal.Lokalisierung;

public class StandortAnlegenPanel extends JDialog
{

  private static final long serialVersionUID = -4360697454891762272L;

  private JLabel bezeichner, ort, plz, hausnummer, strasse, laenge,
      breite;

  private JPanel panelUnten;
  private JTextField txt_bezeichner, txt_ort, txt_plz, txt_hausnummer,
      txt_strasse, txt_laenge, txt_breite;

  private JTextPane txt_info;
  private JButton ok, ca;
  private Lokalisierung lokal;


  public StandortAnlegenPanel (Lokalisierung lokal)
  {
    this.lokal = lokal;
    panelUnten = new JPanel ();
    bezeichner = new JLabel (lokal.gibUebersetzung ("Bezeichner: "));
    bezeichner.setLabelFor (txt_bezeichner);

    /* Adresse */
    strasse = new JLabel (lokal.gibUebersetzung ("Strasse: "));
    strasse.setLabelFor (txt_ort);
    plz = new JLabel (lokal.gibUebersetzung ("PLZ: "));
    plz.setLabelFor (txt_plz);
    ort = new JLabel (lokal.gibUebersetzung ("Ort: "));
    ort.setLabelFor (txt_ort);
    hausnummer = new JLabel (lokal.gibUebersetzung ("Hausnr.: "));
    hausnummer.setLabelFor (txt_hausnummer);

    /* Dimensionen */
    laenge = new JLabel (lokal.gibUebersetzung ("Laenge: "));
    laenge.setLabelFor (txt_laenge);
    breite = new JLabel (lokal.gibUebersetzung ("Breite: "));
    breite.setLabelFor (txt_breite);

    setTitle (lokal.gibUebersetzung ("Standort anlegen"));

    initialisieren ();
  }


  private void initialisieren()
  {
    setLayout (new GridBagLayout ());

    GridBagConstraints o = new GridBagConstraints ();
    o.ipadx = 50;
    o.ipady = 20;
    o.gridx = 0;
    o.gridy = 0;
    o.fill = GridBagConstraints.BOTH;
    o.insets = new Insets (5, 5, 0, 5);
    txt_info = new JTextPane ();
    txt_info.setEditable (false);
    add (txt_info, o);
    o.insets = new Insets (5, 5, 25, 5);
    o.gridx = 0;
    o.gridy = 1;
    add (panelUnten, o);
    panelUnten.setLayout (new GridLayout (8, 2));
    panelUnten.add (ort);
    panelUnten.add (txt_ort = new JTextField ());
    txt_ort.addMouseListener (new KlickListener (txt_ort));
    panelUnten.add (plz);
    panelUnten.add (txt_plz = new JTextField ());
    txt_plz.addMouseListener (new KlickListener (txt_plz));
    panelUnten.add (strasse);
    panelUnten.add (txt_strasse = new JTextField ());
    txt_strasse.addMouseListener (new KlickListener (txt_strasse));
    panelUnten.add (hausnummer);
    panelUnten.add (txt_hausnummer = new JTextField ());
    txt_hausnummer
      .addMouseListener (new KlickListener (txt_hausnummer));
    panelUnten.add (bezeichner);
    panelUnten.add (txt_bezeichner = new JTextField ());
    txt_bezeichner
      .addMouseListener (new KlickListener (txt_bezeichner));
    panelUnten.add (laenge);
    panelUnten.add (txt_laenge = new JTextField ());
    txt_laenge.addMouseListener (new KlickListener (txt_laenge));
    txt_laenge.setDocument (new IntegerDokument ());
    panelUnten.add (breite);
    panelUnten.add (txt_breite = new JTextField ());
    txt_breite.addMouseListener (new KlickListener (txt_breite));
    txt_breite.setDocument (new IntegerDokument ());
    panelUnten
      .add (setzeCa (new JButton (lokal.gibUebersetzung ("ca"))));
    panelUnten
      .add (setzeOk (new JButton (lokal.gibUebersetzung ("ok"))));
    pack ();
    setVisible (true);
  }


  protected JTextField getTxt_ort()
  {
    return txt_ort;
  }


  protected JTextField gibTxt_plz()
  {
    return txt_plz;
  }


  protected JTextField gibTxt_strasse()
  {
    return txt_strasse;
  }


  protected JTextField gibTxt_hausnummer()
  {
    return txt_hausnummer;
  }


  protected JTextField gibTxt_bezeichner()
  {
    return txt_bezeichner;
  }


  protected JTextField gibTxt_laenge()
  {
    return txt_laenge;
  }


  protected JTextField gibTxt_breite()
  {
    return txt_breite;
  }


  protected JTextPane gibTxt_info()
  {
    return txt_info;
  }


  /**
   * Die Methode setzt voreingetragene Daten in das Eingabefenster.
   * Diese sind entweder die Daten des vorherigen Fensters oder bei der
   * ersten Erzeugung Standardwerte.
   * 
   * @param bezeichner
   * @param ort
   * @param plz
   * @param hausnummer
   * @param strasse
   * @param laenge
   * @param breite
   */
  protected void setzeVoreingetrageneDaten(String bezeichner,
    String ort, String plz, String hausnummer, String strasse,
    int laenge, int breite)
  {
    txt_bezeichner.setText (bezeichner);
    txt_ort.setText (ort);
    txt_plz.setText (plz);
    txt_hausnummer.setText (hausnummer);
    txt_strasse.setText (strasse);
    txt_laenge.setText ("" + laenge);
    txt_breite.setText ("" + breite);
  }


  protected JButton gibOk()
  {
    return ok;
  }


  private JButton setzeOk(JButton ok)
  {
    this.ok = ok;
    return ok;
  }


  protected JButton gibCa()
  {
    return ca;
  }


  private JButton setzeCa(JButton ca)
  {
    this.ca = ca;
    return ca;
  }

  /**
   * Der KlickListener hat die Aufgabe ein JTextfeld, in das geklickt
   * worden ist, wieder weiss zu faerben, falls es durch eine Fehler-
   * meldung rot gefaerbt worden ist.
   */
  private class KlickListener extends MouseAdapter
  {
    JTextField textFeld;


    private KlickListener (JTextField textFeld)
    {
      this.textFeld = textFeld;
    }


    public void mouseClicked(MouseEvent e)
    {
      textFeld.setBackground (Color.WHITE);
    }
  }
}
